package com.cold.demo.rabbitmq.demo2;

import com.cold.demo.rabbitmq.utils.ConnectionUtils;
import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * @author: zyc
 */
public class Consumer {


    public static void main(String[] args) throws Exception {
        Connection connection = ConnectionUtils.getConnection();
        Channel    channel    = connection.createChannel();
        // 绑定队列
        // 1、队列名称
        // 2、是否持久化消息
        // 3、是否独占队列
        // 4、是否自动删除队列
        // 5、参数–队列的其他属性（构造参数）
//        channel.queueDeclare("test1", false, false, false, new HashMap<>(0));

        // 发送消息
        // 1、消息队列名称
        // 2、是否发送回执消费回执确认
        // 3、消息的消费回调方法
        channel.basicConsume("e08dc042-d18e-4231-8d9f-aff3c6346797", true, new com.rabbitmq.client.Consumer() {
            /** 消费者的消费标签. */
            private volatile String _consumerTag;
            // 创建对象并准备好会触发改方法
            @Override
            public void handleConsumeOk(String consumerTag) {
                this._consumerTag = consumerTag;
                System.out.println(consumerTag);
            }

            @Override
            public void handleCancelOk(String consumerTag) {
                System.out.println(consumerTag);
            }

            @Override
            public void handleCancel(String consumerTag) throws IOException {
                System.out.println(consumerTag);
            }

            @Override
            public void handleShutdownSignal(String consumerTag, ShutdownSignalException sig) {
                System.out.println(consumerTag);
            }

            @Override
            public void handleRecoverOk(String consumerTag) {
                System.out.println(consumerTag);
            }
            // 接收到消息的时候的方法
            @Override
            public void handleDelivery(String consumerTag,
                                       Envelope envelope,
                                       AMQP.BasicProperties properties,
                                       byte[] body) throws IOException {
                System.out.println(new String(body));
            }
        });

    }
}
